/*
Q:Go语言中的goroutine是什么
A:goroutine时go语言中清凉记得并发执行单元,可以同步执行多个goroutine，而不需要显示地管理生命周期
goroutine由go运行时(runtime)进行调度，可以在并发编程中实现并行执行
*/

package main

import (
	"fmt"
	"sync"
)

func fibonacci(n int, wg *sync.WaitGroup) {
	defer wg.Done()

	x, y := 0, 1
	for i := 0; i < n; i++ {
		fmt.Println(x)
		x, y = y, x+y
	}
}

func main() {
	var wg sync.WaitGroup
	wg.Add(2)
	fibonacci(5, &wg)
	fibonacci(10, &wg)

	wg.Wait()

}

/*
在上述代码中，我们使用go关键字启动了两个goroutine，分别计算斐波那契数列的前10个和前5个数字。
通过使用goroutine，我们可以并行地执行这两个计算任务，而不需要显式地创建和管理线程。
*/
